'''
1、加载20类新闻数据，并进行分割
sklearn.datasets.fetch_20newsgroups(data_home=None,subset='all')
data_home:表示数据集下载的目录,默认是 ~/scikit_learn_data/
subset: 'all'，'train'或'test'，可选，选择要加载的数据集.
      训练集的“训练”，测试集的“测试”，两者的“全部”
datasets.clear_data_home(data_home=None)
	清除目录下的数据

2、TF-IDF生成文章特征词
3、朴素贝叶斯estimator流程进行预估
sklearn.naive_bayes.MultinomialNB(alpha = 1.0)
朴素贝叶斯分类
alpha：拉普拉斯平滑系数

'''
from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
# 1、加载20类新闻数据，并进行分割
# 拿到新闻的数据
news = fetch_20newsgroups(subset="all")

# 特征值
x = news.data
# print(x)
# 目标值
y = news.target
print(y)

x_train,x_test, y_train,y_test = train_test_split(x,y,test_size=0.25, random_state=1)

# 2、TF-IDF生成文章特征词
tfidf = TfidfVectorizer()

# 训练集与测试集的特征抽取
x_train = tfidf.fit_transform(x_train)
x_test = tfidf.transform(x_test)


# 3、朴素贝叶斯estimator流程进行预估
mnb = MultinomialNB()
# 训练都是统一用fit 传入训练集的特征值与目标值
mnb.fit(x_train,y_train)

# 预测的结果
y_predict = mnb.predict(x_test)
# print(y_predict)
# [16 19 18 ..., 13  7 14]  就是将测试集拿去分类得到的一个列表
# 评估准确率
score = mnb.score(x_test,y_test)
print(score)





